package edu.hawaii.halealohacli;

/**
 * The command interface, defines commands.
 * 
 * @author John MacMillan
 * @author Mitchell Kupfer
 * @author Bryson Hori
 * @author Chris Fang
 * @author Chris Wilson
 * @author Daniel Ly
 * @author Jordan Do
 * 
 */
public interface CommandInterface {

  /**
   * Calls daily-energy command.
   * 
   * @param tower the tower the user specified.
   * @param date the date of the day.
   * @return boolean false if fails.
   */
  public boolean dailyEnergy(String tower, String date);

  /**
   * Rank towers command.
   * 
   * @param date1 the start date.
   * @param date2 the end date.
   * @return boolean false if fails.
   */
  public boolean rankTowers(String date1, String date2);

  /**
   * Finds the energy since a given date.
   * 
   * @param tower the tower to find energy for.
   * @param date the start date.
   * @return boolean false if fails.
   */
  public boolean energySince(String tower, String date);

  /**
   * Get the current power of a tower.
   * 
   * @param tower the tower specified by user.
   * @return boolean false if fails.
   */
  public boolean currentPower(String tower);

  /**
   * Monitor the current power of a tower.
   * 
   * @param tower the tower specified by user.
   * @return boolean false if fails.
   */
  public boolean monitorPower(String tower);

  /**
   * Monitor the current power of a tower.
   * 
   * @param tower the tower specified by user.
   * @param interval the interval to get power specified by user.
   * @return boolean false if fails.
   */
  public boolean monitorPower(String tower, String interval);
  
  /**
   * Setting the baseline for a tower's consumed energy in a day.
   * Defaults to yesterday if no date is given.
   * 
   * @param tower the tower specified by user.
   * @param date the date specified
   * @return boolean false if fails.
   */
  public boolean setBaseline(String tower, String date);
  
  /**
   * Comparing current power consumption with a goal based from a given percentage
   * of a pre-determined baseline.
   * 
   * @param tower the tower specified by user.
   * @param goal the goal specified
   * @param interval the interval specified
   * @return boolean false if fails.
   */  
  public boolean monitorGoal(String tower, String goal, String interval);

  /**
   * The help command, prints commands.
   * 
   * @return boolean false if fails.
   */
  public boolean help();

}
